\documentclass[10pt,a4paper]{article}
\usepackage[latin1]{inputenc}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{amssymb}

\author{Per Lenander, Mikael Norgren, Simon Elgland}
\title{IRB Picker - programming by example}

\begin{document}
\maketitle

\begin{abstract}
Is abstract.
\end{abstract}

\tableofcontents

\section{Introduction}
The purpose of this project is to develop an easy way to program an ABB robot without writing a single line of code. The idea is to \textit{show} the robot how to move, or which objects to find, and let the system figure out the details. This way people not trained in using the RAPID programming language or the use of ABB robots in general can quickly set up a working automation line.

The IRB Picker system works using visual and depth feedback from a Kinect camera. The system itself is modular and it is built using the Robotic Operating System (ROS) framework. This project is in part an evaluation of using ROS to quickly prototype robotic applications.

Section \ref{sec:design} introduces the design of the complete system, section \ref{sec:implementation} explains the details of the implementation. In section \ref{sec:usage} an example scenario showing how the system can be used is explored. Finally, the development teams conclusions are presented in section \ref{sec:conclusions}.

\section{Design}
\label{sec:design}
ROS is a messaging framework built up of many different \textit{nodes}, where each node provides some sort of functionality. Nodes communicate by passing messages to each other over \textit{topics}. Each node can be seen as a standalone executable.

Looking at the problem at hand:

\begin{itemize}
\item The system must be able to control the movements of an ABB robot
\item The system must be able to find and track different objects
\item The system must be able to record a series of actions to later play (programming by example)
\end{itemize}

From this basic feature set we design a set of nodes and split the functionality of the system in smaller portions. This way each part can be separately validated and tested. The following nodes were included in the basic design:

\begin{itemize}
\item \textbf{Tracker:} Finds objects and tracks their position over time.

\item \textbf{Recorder:} Records the paths of objects. Can also play these recordings to make the robot move. Contains functionality to handle multiple recordings at the same time.

\item \textbf{IRB controller:} Handles interaction with the ABB robot through TCP/IP. Can receive pose commands to move the robot.
\end{itemize}

\textbf{NODE OVERVIEW IMAGE}

\section{Implementation}
\label{sec:implementation}

\subsection{Tracker}

\subsection{Recorder}

\subsection{IRB controller}

\textbf{Topics}

\textbf{SDL Sockets}

\section{Usage example}
\label{sec:usage}

\section{Conclusions}
\label{sec:conclusions}

% Refs?

\end{document}
